package cn.tedu.csmall.product.schedule;

import cn.tedu.csmall.product.service.IBrandService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


@Slf4j
@Component
public class CacheSchedule {

    @Autowired
    private IBrandService brandService;

    public CacheSchedule() {
        log.debug("创建计划任务类对象：CacheSchedule");
    }

    // fixedRate：执行计划任务的执行频率，【以上一次任务的起始时间开始计时，得到下次执行的时间】以毫秒为单位
    // fixedDelay：执行计划任务的间隔时间，【以上一次执行的结束时间开始解释得到下次的执行时间】以毫秒为单位
    // corn属性：使用1个字符串作为值(xx xx xx xx xx xx xx)，此字符串是一个表达式，可包含6-7个值，各值用空格符分隔
    // 各值从左往右依此代表：秒，分，时，日，月，周，(年)；
    // 各值可以使用*号通配符，表示任意值
    // 也可使用?号，表示不关心此值，此通配符只用于‘日’和‘周’
    // 在corn表达式中的各值还可以使用分数形式，例如在分钟上使用‘ 1/5’,则表示分钟值为1时执行一次，且每5分钟执行一次
    @Scheduled(fixedRate = 3 * 60 * 1000)
    public void rebuildCache() {
        log.debug("开始执行计时任务...");
        brandService.rebuildCache();
    }
}
